﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StyleMVVM.View
{
	/// <summary>
	/// This enumeration defines the different ways the charm can be oriented to the screen
	/// </summary>
	public enum CharmOrientation
	{
		Left,
		Top,
		Right,
		Bottom
	}

	/// <summary>
	/// Classes that implement and export this interface will be used to create Setting Pane configuration
	/// </summary>
	public interface ICharmInfo
	{
		/// <summary>
		/// This is the unique id the charm will be known by (incase you want to activate it indepent of the setting pane)
		/// </summary>
		string CharmId { get; }

		/// <summary>
		/// This is the name of the View to use when the charm is activated (usually a View that inherits from CharmControl)
		/// </summary>
		string ExportName { get; }

		/// <summary>
		/// This is the text that is displayed in the setting pane
		/// </summary>
		string SettingsText { get; }

		/// <summary>
		/// This property specifies if the charm should be listed in the Settings Pane (true by default)
		/// Note: This called each time the Settings Pane is opened
		/// </summary>
		bool ShowInAppSettings { get; }

		/// <summary>
		/// This is either the width or height of the Charm based upon orientation
		/// </summary>
		int CharmSize { get; }

		/// <summary>
		/// This is the orientation of the charm by default it is CharmOrientation
		/// </summary>
		CharmOrientation Orientation { get; }

		/// <summary>
		/// This specifies if the popup should transition its content. (false by default)
		/// For Settings charm it is recommended that this is false.
		/// </summary>
		bool TransitionPopup { get; }
	}
}